<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="ulA8r" id="ulA8r"><span data-lake-id="u0a2ff899" id="u0a2ff899">典型回答</span></h1>
  <p data-lake-id="ub2a134f2" id="ub2a134f2"><br></p>
  <p data-lake-id="u68fadb1a" id="u68fadb1a"><span data-lake-id="uf9772053" id="uf9772053">不一定，但是通常为了提高CAS的成功率，会考虑做自旋。</span></p>
  <p data-lake-id="u8b1d01c5" id="u8b1d01c5"><span data-lake-id="u7abc5988" id="u7abc5988">​</span><br></p>
  <blockquote data-lake-id="u0d532747" id="u0d532747">
   <p data-lake-id="u7bd5e404" id="u7bd5e404"><span data-lake-id="uf3d6487e" id="uf3d6487e">最简单的自旋就是while(true)</span></p>
  </blockquote>
  <p data-lake-id="u981c49a0" id="u981c49a0"><br></p>
  <p data-lake-id="u241b5fd5" id="u241b5fd5"><span data-lake-id="u714b84a8" id="u714b84a8">通常情况下，CAS 操作都会采用自旋的方式，当 CAS 失败时，会重新尝试执行 CAS 操作，直到操作成功或达到最大重试次数为止。</span></p>
  <p data-lake-id="ud1561819" id="ud1561819"><span data-lake-id="u26f393c6" id="u26f393c6">​</span><br></p>
  <p data-lake-id="u6c1aa182" id="u6c1aa182"><span data-lake-id="ua3ee459c" id="ua3ee459c">因为，CAS 操作一般都是在多线程并发访问时使用，如果直接阻塞线程，会导致性能下降，而采用自旋的方式，可以让 CPU 空转一段时间，等待锁被释放，从而避免线程切换和阻塞的开销。</span></p>
  <p data-lake-id="u52225b14" id="u52225b14"><span data-lake-id="ub9b84462" id="ub9b84462">​</span><br></p>
  <p data-lake-id="u9b4c9881" id="u9b4c9881"><span data-lake-id="ue86eb1d8" id="ue86eb1d8">但是，如果自旋时间过长或者线程数过多，就会占用过多的 CPU 资源，导致系统性能下降，因此在使用 CAS 操作时，需要根据实际情况进行适当的调整。</span></p>
 </body>
</html>